public class TProductos{

	private TLista LProductos;
	
	public TProductos(){
		this.LProductos = new TLista();
	}
	
	
	
	public TProducto buscarPorCodigo(Comparable codigo) {
		if(LProductos.buscar(codigo) != null){
		TElemento aux=this.LProductos.buscar(codigo);
		TProducto adevolver = (TProducto)aux.getDato();
		return adevolver;
		}
		return null;
		
	}

	
	public TLista ordenarPorNombre() {
		
		TLista adevolver = new TLista();
		
		TElemento elem = this.LProductos.getPrimero();
		
		
		
		while(elem != null){
			TElemento inserta = new TElemento(((TProducto)elem.getDato()).getNombre());
			TProducto prod = new TProducto(null, 0, ((TProducto)elem.getDato()).getStock());
			inserta.setDato(prod);
			adevolver.insertarOrdenado(inserta);
			
			elem = elem.getSiguiente();
		}
		
		return adevolver;
		
	
	}

	public TLista getProductos(){
		
		return this.LProductos;
		
	}
	@SuppressWarnings("rawtypes")
	public boolean agregarNuevoProducto(Comparable codigoDeBarras, String nombre, double precio, int stock){
				
		if (LProductos.buscar(codigoDeBarras)!= null) {
			return false;
		} else {
					
		TProducto producto = new TProducto(nombre,precio, stock);
		TElemento elemento= new TElemento(codigoDeBarras);
		elemento.setDato(producto);
		this.LProductos.insertarAlPrincipio(elemento);
		return true;
		}
		
	}

	public boolean QuitarProducto(Comparable codigoBarras){
		if (!this.LProductos.esVacia()){
			return this.LProductos.eliminar(codigoBarras)!=null;
		}
		return false;
	}
	
	public boolean AgregarStock(Comparable codigoBarras, Integer cantidad) {
		if (this.LProductos.esVacia()){
			return false;
		}
		TProducto buscado =(TProducto)this.LProductos.buscar(codigoBarras).getDato();
		
		if (buscado != null){
			buscado.setStock(buscado.getStock()+ cantidad);
			return true;
		}
		return false;
		
	}
	
	public boolean QuitarStock(Comparable codigoBarras, Integer cantidad) {
		if (this.LProductos.esVacia()){
			return false;
		}
		TProducto buscado =(TProducto) this.LProductos.buscar(codigoBarras).getDato();
		
		if (buscado != null&& buscado.getStock() >= cantidad){
			buscado.setStock(buscado.getStock() - cantidad);
			return true;
		}
		return false;
	}
	


	}
